home *** CD-ROM | disk | FTP | other *** search
- ; _printHex Outputs accumulator as a pair of hex digits
- ; _printHex2 Outputs accumulator (msb) and X (lsb) as hex number
-
- ; RTK, 10.22.93
-
- ; uses Monitor.OBJ - to be incorporated into system monitor
-
- #org 1000
-
- #equ cout F845 ; print character in A (Monitor.OBJ)
-
- ; _printHex - output A as a hexadecimal number, A is unchanged
-
- ._printHex sta $06 ; monitor scratch location
- and #f0 ; mask lsn
- rsh ; and move msn to lsn
- rsh
- rsh
- rsh
- cmp #09 ; greater than 9?
- bgt hex1 ; yes, output letter
- clc ; no, add $30 to get
- adc #30 ; ASCII for digit
- jsr cout ; print first digit
- jmp next ; go to next digit
- .hex1 clc ; add $37 to
- adc #37 ; get letter
- jsr cout ; and print digit
- .next lda $06 ; get original from scratch
- and #0f ; kill upper bits
- cmp #09 ; greater than 9?
- bgt hex2 ; yes, output letter
- clc ; no, add $30 to get
- adc #30 ; ASCII for digit
- jsr cout ; print second digit
- jmp end ; go to next digit
- .hex2 clc ; add $37 to
- adc #37 ; get letter
- jsr cout ; and print digit
- .end lda $06 ; recover initial A value
- rts ; exit
-
- ; _printHex2 - outputs A & X as 16-bit number - destroys A
-
- ._printHex2 jsr _printHex ; print A
- txa ; put X in A
- jsr _printHex ; print it
- rts ; exit
-